package cn.itcast.aop;

import lombok.extern.log4j.Log4j;
import org.apache.log4j.Logger;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;


@Component
@Aspect
@Log4j
public class RunTimeAspect {


    @Around("execution(* cn.itcast.service..*.*(..))")
    public Object around(ProceedingJoinPoint pjp)throws Throwable{
        long start = System.currentTimeMillis();//开始时间

        Object result = pjp.proceed(pjp.getArgs());// 调用目标方法

        long end = System.currentTimeMillis();//结束时间

        //获取目标类的名字和目标方法的名字
        String className = pjp.getSignature().getDeclaringTypeName();//获取目标对象的类名
        String methodName = pjp.getSignature().getName();//获取正在执行的方法的名子


//        System.out.println(className+"中的"+methodName+"方法,执行花费了"+(end-start)+"毫秒");
        log.info(className+"中的"+methodName+"方法,执行花费了"+(end-start)+"毫秒");
        return result;
    }
}
